| Problem 1 |
| Compute the output of the program. Calcule la salida del programa. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } void Tunning(int* n); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { int x = 10; int *y = &x; Tunning(y); this->Text = Sys::Convert::ToString(x); } void Program::Tunning(int* n) { (*n) = 5; } |
| Problem 2 |
| Compute the output of the program. Calcule la salida del programa. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } int Function(int* x); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { int n=20; int x = Function(&n); wchar_t texto[128]; _snwprintf_s(texto, 128, _TRUNCATE, L"%d - %d", n, x); this->MessageBox(texto, texto, MB_OK); } int Program::Function(int* x) { (*x)++; return (*x)*2; } |
| Tip |
| An array without an index is a pointer to the first element of the array. When an array is passed to a function, only a pointer to the first element of the array is passed to the function. That is, the compiler does not create a copy of the whole array. Un arreglo sin un índice es un puntero al primer elemento del arreglo. Cuando se pasa un arreglo a una función, solamente se pasa la dirección del primer elemento del arreglo. Esto es, el compilador no crea una copia del arreglo completo. |
| Problem 3 |
| Compute the output of the program. Calcule la salida del programa. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } void funa(double* x, int n); double funi(double*y, int n); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { wstring text; double x[3]; funa(x, 3); text = Sys::Convert::ToString(funi(x, 3)); this->MessageBox(text, L"funi", MB_OK); for(int i=0; i<3; i++) { text = Sys::Convert::ToString(x[i]); this->MessageBox(text, L"x", MB_OK); } } void Program::funa(double* x, int n) { for(int i = 0; i<n; i++) x[i] = 2*i+1; } double Program::funi(double*y, int n) { double z = 0.0; for(int i = 0; i<n; i++) z+=y[i]; return z/n; } |
| Problem 4 |
| Compute the output of the program. The command sizeof returns the number of bytes of the any variable. Calcule la salida del programa. El comando sizeof regresa el número de bytes de cualquier variable. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } void funa(double* x, int n); double funi(double*x, int n); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { wstring texto; double x[3]; double y[]={2.0, -2.0, 3.0, 5.0}; funa(x, 3); texto = Sys::Convert::ToString(funi(x, 3)); this->MessageBox(texto, L"x", MB_OK); texto = Sys::Convert::ToString(funi(y, sizeof(y)/sizeof(y[0]))); this->MessageBox(texto, L"x", MB_OK); } void Program::funa(double* x, int n) { for(int i = 0; i < n; i++) x[i] = 2*i+1; } double Program::funi(double*x, int n) { double z = 0.0; for(int i = 0; i < n; i++) z += x[i]; return z/n; } |
| Problem 5 |
| Compute the output of the program. Calcule la salida del programa. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } double fune(int x[], int n); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { wchar_t texto[64]; int y[] = {2, -20, 3, 5}; _snwprintf_s(texto, 64, _TRUNCATE, L"%.2f", fune(y, 4)); this->MessageBox(texto, L"x", MB_OK); _snwprintf_s(texto, 64, _TRUNCATE, L"%d", y[1]); this->MessageBox(texto, L"x", MB_OK); } double Program::fune(int x[], int n) { for(int i = 0; i < n; i++) x[i] = -2; return x[0]/(double)n; } |
Passing Text Strings to a Function |
| A text string is an array of characters that ends with the character '\0'. Thus, when a text string is passed to a function, only a pointer to the beginning of the string is passed to the function. This pointer is of the data type wchar_t . Las cadenas de texto son simplemente arreglos de letras que terminan con el caracter '\0'. Asi, cuando se pasa una cadena de texto a una función, solamente se pasa un puntero al inicio de la cadena de texto. Este puntero es del tipo wchar_t . |
| Problem 6 |
| Compute the output of the program. Calcule la salida del programa. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } void Magic(wchar_t* p); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { wchar_t invitacion[]= L"Hello"; Magic(invitacion); this->MessageBox(invitacion, L"Program", MB_OK); } void Program::Magic(wchar_t* p) { while(*p != '\0') { switch(*p) { case'e': *p = 'o'; break; case'o': *p = 'a'; break; } p++; } } |
| Problem 7 |
| Compute the output of the program. Calcule la salida del programa. |
| Program.h |
| #pragma once //______________________________________ Program.h #include "resource.h" class Program: public Win::Dialog { public: Program() { } ~Program() { } wchar_t* GoTo(wchar_t* p, int n); protected: . . . }; |
| Program.cpp |
| void Program::Window_Open(Win::Event& e) { wchar_t nombre[]=L"ABCDEFGH"; this->MessageBox(GoTo(nombre, 5), L"Program", MB_OK); } wchar_t* Program::GoTo(wchar_t* p, int n) { wchar_t* q=NULL; if (*p != '\0') { p += n; q = p; } return q; } |